﻿#include<iostream>
#include<deque>


void printDeque(std::deque<int> d)
{
	for (std::deque<int>::iterator it = d.begin(); it != d.end(); ++it)
	{
		std::cout << *it << ' ';
	}
	std::cout << '\n';
}
void test01()
{
	std::deque<int> d1;
	//尾插
	d1.push_back(1);
	d1.push_back(2);
	d1.push_back(3);
	//头插
	d1.push_front(0);
	d1.push_front(1);
	d1.push_front(2);
	d1.push_front(3);

	printDeque(d1);

	//尾删
	d1.pop_back();

	//头删
	d1.pop_front();

	printDeque(d1);
}

void test02()
{
	std::deque<int> d1;
	//尾插
	d1.push_back(1);
	d1.push_back(2);
	d1.push_back(3);
	//头插
	d1.push_front(0);
	d1.push_front(1);
	d1.push_front(2);
	d1.push_front(3);

	printDeque(d1);
	//3 2 1 0 1 2 3
	d1.insert(d1.begin() + 1 , 0);
	printDeque(d1);
	//3 0 0 0 2 1 0 1 2 3
	d1.insert(d1.begin() + 1, 2 , 0);
	printDeque(d1);

	std::deque<int> d2;
	d2.push_back(7);
	d2.push_back(8);
	d2.push_back(9);
	//7 0 0 0 8 9
	d2.insert(d2.begin() + 1, d1.begin() + 1, d1.end() - 6);
	printDeque(d2);
}

void test03()
{

	std::deque<int> d1;
	//尾插
	d1.push_back(1);
	d1.push_back(2);
	d1.push_back(3);
	//头插
	d1.push_front(0);
	d1.push_front(1);
	d1.push_front(2);
	d1.push_front(3);

	printDeque(d1);
	//3 2 1 0 1 2 3 
	d1.erase(d1.begin() + 3);
	printDeque(d1);
	// 3 2 1 1 2 3
	d1.erase(d1.begin() + 2 , d1.end() - 2);
	printDeque(d1);

}
int main()
{
	//test01();
	//test02();
	test03();
	return 0;
}